package telas;

import java.awt.Font;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

import uteis.string_grid;

import entidades.produto;

public class lista_produto extends tela_base
{
	private static final long serialVersionUID = 8461440777790799989L;
	
	protected ArrayList<produto> produtos;
	protected ArrayList<JRadioButton> linhas_grid;
	protected produto produto_selecionado;

	public produto obter_produto()
	{
		if (this.iniciar())
		{
			return this.produto_selecionado;
		}
		else
		{
			return null;
		}
	}

	protected JPanel jpn_grid;

	protected JPanel jpn_dados;
	protected JButton jbt_selecionar;

	public lista_produto(ArrayList<produto> _produtos)
	{
		super("Lista de Produtos", 652, 402);

		this.produtos = _produtos;

		criar_grid();
	}

	@Override
	protected void criar_componentes()
	{
		super.criar_componentes();

		this.jpn_grid = this.adicionar_panel(1, 1, 650, 402, true);

		this.jpn_dados = this.criar_panel(0, 0, 700, 350, this.jpn_grid);

		this.jbt_selecionar = this.criar_button("selecionar", 540, 365, 100,
				25, this.jpn_grid);
	}

	protected void criar_grid()
	{
		int y = 10;

		ButtonGroup btg = new ButtonGroup();
		this.linhas_grid = new ArrayList<JRadioButton>();

		JRadioButton jrb;

		string_grid<produto> grid = new string_grid<produto>(this.produtos,
				"get_descricao", "get_categoria", "get_valor_unitario");
		ArrayList<String> itens_grid = grid.montar();

		Font fonte = new Font("Lucida Console", Font.PLAIN, 12);

		for (String item : itens_grid)
		{
			jrb = this.criar_radiobutton(item, 10, y, this.jpn_dados);
			jrb.setFont(fonte);
			btg.add(jrb);
			this.linhas_grid.add(jrb);

			y += 20;
		}
	}

	@Override
	protected void button_onclick(JButton _button)
	{
		if (_button.equals(this.jbt_selecionar))
		{
			for (int i = 0; i < this.linhas_grid.size(); i++)
			{
				if (this.linhas_grid.get(i).isSelected())
				{
					this.produto_selecionado = this.produtos.get(i);
					break;
				}
			}
		}

		if (this.produto_selecionado != null)
		{
			this.encerrar(true);
		}
		else
		{
			JOptionPane.showMessageDialog(this, "Selecione um produto !");
		}
	}
}